1. Technical Field
The present invention embodiments relate to scheduling of tasks and, more specifically, to dynamic scheduling of tests or other tasks for target machines or systems based on the similarity of resources required or utilized to perform the tests.
2. Discussion of the Related Art
Users of automated software testing systems may schedule tests to be performed unattended at various instances, including at a set time, regularly at periodic intervals, or in response to a new build of software becoming available. An example of a testing system includes the IBM Rational Quality Manager.
Automated testing systems maintain a queue or list of requested tests. The tests within the queue are considered independently, and blindly executed in the order of insertion into the queue which is based on arrival of the corresponding test request. Specifically, when a test within the queue becomes available to be performed (e.g., reaches the front of the queue), the hardware and software requirements for that test are determined. A pool of available hardware is scanned for one or more machines that accommodate the requirements for the test. If one or more machines are identified that accommodate the test requirements, the test is immediately dispatched to execute on the identified machines. Otherwise, the test is forced to wait until appropriate machines become available.
Once the available test is processed, the next test in the queue is subsequently considered (even while a prior test may still be executing). The above process is repeated until each test in the queue has been performed, or all tests within the queue that have not been performed are forced to wait due to unavailable machines.